package org.example.com.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.com.pojo.Post;
import org.example.com.pojo.vo.PostVO;

import java.util.List;

/**
 * 帖子Mapper接口
 */
@Mapper
public interface PostMapper {
    
    /**
     * 创建帖子
     */
    int insert(Post post);
    
    /**
     * 根据ID查询帖子
     */
    Post selectById(Integer id);
    
    /**
     * 分页查询帖子列表
     */
    List<PostVO> selectPage(@Param("offset") Integer offset, @Param("limit") Integer limit, @Param("userId") Integer userId);
    
    /**
     * 查询帖子总数
     */
    int selectCount();
    
    /**
     * 根据用户ID查询帖子列表
     */
    List<PostVO> selectByUserId(@Param("userId") Integer userId, @Param("offset") Integer offset, @Param("limit") Integer limit);
    
    /**
     * 更新帖子
     */
    int update(Post post);
    
    /**
     * 删除帖子（软删除）
     */
    int deleteById(Integer id);
    
    /**
     * 增加点赞数
     */
    int incrementLikeCount(Integer id);
    
    /**
     * 减少点赞数
     */
    int decrementLikeCount(Integer id);
    
    /**
     * 增加评论数
     */
    int incrementCommentCount(Integer id);
    
    /**
     * 减少评论数
     */
    int decrementCommentCount(Integer id);
    
    /**
     * 增加分享数
     */
    int incrementShareCount(Integer id);
}
